# def print_info(*args, **kwargs):
#     if args:
#         print(args)
#     if kwargs:
#         print('----------info----------')
#         for k,v in kwargs.items():
#             # 英文字符串首字母大写，capitalize(),title()
#             print(f'{k.title()}: {v}')
#
# print_info(name="Alex", age=22, sex="M")
# print_info(name="Jack", age=26, hobbie="学习")

# 学籍注册程序
'''
需求：
1. 要求⽤户输⼊姓名、年龄、⼿机号、身份证号、所选课程，然后为学员完成注册
2. ⼿机号、身份证号唯⼀
3. 可选的课程只能从Python、Linux、⽹络安全、前端、数据分析 这⼏⻔⾥选
4. 学员信息存⼊⽂件
'''
FILE_NAME = '学生学籍注册信息.txt'


# 获取文件中的学生学籍注册信息
def get_stu_list():
    f = open(file=FILE_NAME, mode='r', encoding='utf-8')
    student_info_list = [line.rstrip('\n').split(',') for line in f]  # 学籍信息列表,列表生成式
    # for line in f:
    #     line = line.rstrip('\n').split(',')  # 去掉换行符的操作
    #     student_info_list.append(line)
    f.close()
    return student_info_list


# 判断手机号码及身份证是否重复
def info_repeat(stu_mobile, stu_id, student_info_list):
    mobile_repeat_flag = None  # 默认为空
    id_repeat_flag = None  # 默认为空
    if student_info_list:  # student_info_list有值的时候才判断:
        '''
        0:姓名、1:年龄、2:⼿机号、3:身份证号、4:所选课程
        '''
        for stu_info in student_info_list:
            if stu_mobile == str(stu_info[2]):  # 手机号重复
                mobile_repeat_flag = True
                break  # 直接退出循环

            if stu_id == str(stu_info[3]):  # 身份证重复
                id_repeat_flag = True  # 直接退出循环
                break
    else:  # student_info_List为空，则直接添加
        mobile_repeat_flag = False
        id_repeat_flag = False
    return mobile_repeat_flag, id_repeat_flag  # 返回手机号码及身份证重复标识


# 将学生信息写入文件
def save_student_info(student_info_list):
    f = open(file=FILE_NAME, mode='w', encoding='utf-8')  # 直接覆盖当前的文件
    for stu_info in student_info_list:
        f.write(f'{stu_info[0]},{stu_info[1]},{stu_info[2]},{stu_info[3]},{stu_info[4]}\n')
    f.close()


# 主运行函数
def main():
    print('欢迎来到学生学籍注册信息录入')
    student_info_list = get_stu_list()  # 初始化学生学籍注册信息列表
    while True:
        # 进行学生学籍输入
        stu_name = input('请输入学生姓名:')
        stu_age = str(input('请输入年龄:'))
        stu_mobile = str(input('请输入手机号:'))
        stu_id = str(input('请输入身份证号:'))
        stu_course = str(input('请输入课程:'))

        # 进行手机号和身份证号重复判断
        mobile_repeat_flag, id_repeat_flag = info_repeat(stu_mobile, stu_id, student_info_list)
        if mobile_repeat_flag or id_repeat_flag:  # 手机号或者身份证号
            print('手机或身份证号重复，请重新输入!')
            continue  # 跳过循环
        else:
            print('保存成功!')
            student_info_list.append([stu_name, stu_age, stu_mobile, stu_id, stu_course])  # 将学生信息添加到列表中

        flag = input('请问是否需要继续输入(yes or no):')
        if flag == 'yes':
            continue
        else:  #
            save_student_info(student_info_list)  # 存到文件中
            exit('本次输入结束。')


if __name__ == "__main__":
    main()
